<?php
/**
 * PHP的单例模式不支持饿汉模式，仅支持懒汉模式
 * 单例模式的使用场景：
 * 1.在一整个app的执行生命过程中，要求仅有唯一一个实例时，使用单例模式是最好的解决方法。
 */

namespace App\DesignPattern\Singleton;


class LogSingleton {
	
	private $_content = '';

	/**
	 * 单例模式禁止外部实例化
	 */
	private function __construct(){
		echo '测试构造只执行一次<br/>';
	}
	
	/**
	 * 测试方法下的方法
	 * @param string $msg
	 */
	public function write($msg){
		$this->_content .= "{$msg}<br/>";
	}
	
	/**
	 * 测试只进行了一次析构
	 */
	public function __destruct(){
		echo $this->_content;
		echo '测试析构只执行一次';
	}
	
	/**
	 * 单例模式下的唯一实例对象
	 * @var LogSingleton
	 */
	private static $_instance = null;
	
	/**
	 * 唯一实例化
	 * @return LogSingleton
	 */
	public static function getInstance(){
		if(is_null(self::$_instance)){
			self::$_instance = new self();
		}
		return self::$_instance;
	}
}
